package com.qujia.customer.service;

import com.qujia.customer.domain.CustomerCardUseRecord;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 客户电子会员卡充值消费记录Service接口
 *
 * @author qujia
 * @date 2021-05-18
 */
public interface ICustomerCardUseRecordService
{
    /**
     * 查询客户电子会员卡充值消费记录
     *
     * @param id 客户电子会员卡充值消费记录ID
     * @return 客户电子会员卡充值消费记录
     */
    public CustomerCardUseRecord selectCustomerCardUseRecordById(Long id);


    public CustomerCardUseRecord selectCustomerCardUseRecordByOrderNo(String orderNo);
    /**
     * 查询客户电子会员卡充值消费记录列表
     *
     * @param customerCardUseRecord 客户电子会员卡充值消费记录
     * @return 客户电子会员卡充值消费记录集合
     */
    public List<CustomerCardUseRecord> selectCustomerCardUseRecordList(CustomerCardUseRecord customerCardUseRecord);

    /**
     * 新增客户电子会员卡充值消费记录
     *
     * @param customerCardUseRecord 客户电子会员卡充值消费记录
     * @return 结果
     */
    public int insertCustomerCardUseRecord(CustomerCardUseRecord customerCardUseRecord);

    /**
     * 修改客户电子会员卡充值消费记录
     *
     * @param customerCardUseRecord 客户电子会员卡充值消费记录
     * @return 结果
     */
    public int updateCustomerCardUseRecord(CustomerCardUseRecord customerCardUseRecord);

    /**
     * 批量删除客户电子会员卡充值消费记录
     *
     * @param ids 需要删除的客户电子会员卡充值消费记录ID
     * @return 结果
     */
    public int deleteCustomerCardUseRecordByIds(Long[] ids);

    /**
     * 删除客户电子会员卡充值消费记录信息
     *
     * @param id 客户电子会员卡充值消费记录ID
     * @return 结果
     */
    public int deleteCustomerCardUseRecordById(Long id);

    /**
     * 充值，消费记录汇总
     * @param customerCardUseRecord
     * @return
     */
    public CustomerCardUseRecord listCZXFData(CustomerCardUseRecord customerCardUseRecord);

    /***
     * 小程序查询充值合计金额
     * @param customerCardUseRecord
     * @return
     */
    public CustomerCardUseRecord appletCzSum(CustomerCardUseRecord customerCardUseRecord);


    /**
     * 充值，消费记录汇总(包括已经退款的)
     * @param customerCardUseRecord
     * @return
     */
    public CustomerCardUseRecord listAllCZXFData(CustomerCardUseRecord customerCardUseRecord);

    /***
     * 充值合计(包括退款)
     * @param params
     * @return
     */
    BigDecimal getTotalAmtByConditions(Map<String, Object> params);

    BigDecimal getTotalPresentAmtByConditions(Map<String, Object> params);

    int insertBatch(List<CustomerCardUseRecord> recordList);

    List<CustomerCardUseRecord> selectCustomerCardUseRecordListWithNullValue(CustomerCardUseRecord customerCardUseRecord);

    List<CustomerCardUseRecord> selectCardUseRecordVoList(CustomerCardUseRecord form);
}
